package com.ecoolex.union.pay.retailer.core.manager;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class UnionPayPopularCurrencyCodeManager {

    static final Map<String, String> CURRENCY_CODE = new ConcurrentHashMap<>(180);

    static final Map<String, String> CURRENCY_NAME = new ConcurrentHashMap<>(180);

    static {
        append("ALL", "008");//阿尔巴尼亚列克
        append("DZD", "012");//阿尔及利亚第纳尔
        append("ARS", "032");//阿根廷比索
        append("AUD", "036");//澳大利亚元
        append("BSD", "044");//巴哈马元
        append("BHD", "048");//巴林第纳尔
        append("BDT", "050");//孟加拉国塔卡
        append("Dram", "051");//亚美尼亚元
        append("Dram", "051");//亚美尼亚元
        append("BBD", "052");//巴巴多斯元
        append("BMD", "060");//百慕大元
        append("Ngultrum", "064");//不丹元
        append("Ngultrum", "064");//不丹元
        append("BOB", "068");//玻利维亚比索
        append("BWP", "072");//博茨瓦纳普拉
        append("BZD", "084");//伯利兹元
        append("SBD", "090");//所罗门群岛元
        append("BND", "096");//文莱元
        append("MMK", "104");//缅元
        append("BIF", "108");//布隆迪法郎
        append("KHR", "116");//柬埔寨瑞尔
        append("CAD", "124");//加元
        append("CVE", "132");//佛得角埃斯库多
        append("KYD", "136");//开曼群岛元
        append("LKR", "144");//斯里兰卡卢比
        append("CLP", "152");//智利比索
        append("CNY", "156");//人民币元
        append("COP", "170");//哥伦比亚比索
        append("KMF", "174");//科摩罗法郎
        append("CRC", "188");//哥斯达黎加科郎
        append("HRK", "191");//克罗地亚库纳
        append("CUP", "192");//古巴比索
        append("CZK", "203");//捷克克郎
        append("DKK", "208");//丹麦克朗
        append("DOP", "214");//多米尼加比索
        append("SVC", "222");//萨尔瓦多科郎
        append("ETB", "230");//埃塞俄比亚比尔
        append("Nafka", "232");//厄立特里亚元
        append("FKP", "238");//福克兰群岛镑
        append("FJD", "242");//斐济元
        append("DJF", "262");//吉布提法郎
        append("GEL", "268");//GEL
        append("GMD", "270");//冈比亚达拉西
        append("GIP", "292");//直布罗陀镑
        append("GTQ", "320");//危地马拉格查尔
        append("GNF", "324");//几内亚法郎
        append("GYD", "328");//圭亚那元
        append("HTG", "332");//海地古德
        append("HNL", "340");//洪都拉斯伦皮拉
        append("HKD", "344");//港币
        append("HUF", "348");//匈牙利福林
        append("ISK", "352");//冰岛克郎
        append("INR", "356");//印度卢比
        append("IDR", "360");//印尼卢比/东帝汶卢比
        append("IRR", "364");//伊朗里亚尔
        append("IQD", "368");//伊拉克第纳尔
        append("ILS", "376");//以色列磅
        append("JMD", "388");//牙买加元
        append("JPY", "392");//日元
        append("KZT", "398");//哈萨克斯坦坚戈
        append("JOD", "400");//约旦第纳尔
        append("KES", "404");//肯尼亚先令
        append("KPW", "408");//北朝鲜圆
        append("KRW", "410");//韩元
        append("KWD", "414");//科威特第纳尔
        append("KGS", "417");//KGS
        append("LAK", "418");//老挝基普
        append("LBP", "422");//黎巴嫩镑
        append("LSL", "426");//莱索托罗提
        append("LVL", "428");//拉托维亚拉特
        append("LRD", "430");//利比里亚元
        append("Dinar", "434");//利比亚第纳尔
        append("LTL", "440");//立陶宛
        append("MOP", "446");//澳门币
        append("MWK", "454");//马拉维克瓦查
        append("MYR", "458");//马来元/林吉特
        append("MVR", "462");//马尔代夫卢菲亚
        append("MRO", "478");//毛里塔尼亚乌吉亚
        append("MUR", "480");//毛里求斯卢比
        append("MXN", "484");//墨西哥比索
        append("MNT", "496");//蒙古图格里克
        append("Leu", "498");//摩尔多瓦元
        append("MAD", "504");//摩洛哥迪拉姆
        append("OMR", "512");//阿曼里亚尔
        append("NAD", "516");//纳米比亚元
        append("NPR", "524");//尼泊尔卢比
        append("ANG", "532");//荷属安的列斯盾
        append("AWG", "533");//阿鲁巴盾
        append("VUV", "548");//瓦努阿图瓦图
        append("NZD", "554");//新西兰元
        append("NIO", "558");//尼加拉瓜金科多巴
        append("NGN", "566");//尼日利亚奈拉
        append("NOK", "578");//挪威克朗
        append("PKR", "586");//巴基斯坦卢比
        append("PAB", "590");//巴拿马巴波亚
        append("PGK", "598");//巴布亚新几内亚基那
        append("PYG", "600");//巴拉圭瓜拉尼
        append("PEN", "604");//秘鲁索尔
        append("PHP", "608");//菲律宾比索
        append("QAR", "634");//卡塔尔里亚尔
        append("RUB", "643");//俄罗斯卢布
        append("RWF", "646");//卢旺达法郎
        append("SHP", "654");//圣赫勒拿镑
        append("STD", "678");//圣多美和普林西比多布拉
        append("SAR", "682");//沙特里亚尔
        append("SCR", "690");//塞舌尔卢比
        append("SLL", "694");//塞拉利昂利昂
        append("SGD", "702");//新加坡元
        append("VND", "704");//越南盾
        append("SOS", "706");//索马里先令
        append("ZAR", "710");//南非兰特
        append("ZWD", "716");//津巴布韦元
        append("SSD", "728");//南苏丹磅
        append("SDD", "736");//第納爾
        append("SZL", "748");//里兰吉尼
        append("SEK", "752");//瑞典克郎
        append("CHF", "756");//瑞士法郎
        append("SYP", "760");//叙利亚镑
        append("THB", "764");//泰铢
        append("TOP", "776");//汤加邦加
        append("TTD", "780");//特立尼达和多巴哥元
        append("AED", "784");//阿拉伯迪拉姆
        append("TND", "788");//突尼斯第纳尔
        append("UGX", "800");//乌干达先令
        append("MKD", "807");//马其顿第纳尔
        append("EGP", "818");//埃及镑
        append("GBP", "826");//英镑
        append("TZS", "834");//坦桑尼亚先令
        append("USD", "840");//美元
        append("UYU", "858");//乌拉圭比索
        append("UZB", "860");//乌兹别克斯坦
        append("WST", "882");//萨摩亚塔拉
        append("YER", "886");//也门里亚尔
        append("CSD", "891");//塞尔维亚第纳尔
        append("ZMK", "894");//赞比亚克瓦查
        append("TWD", "901");//新台币
        append("VES", "928");//玻利瓦尔苏别纳
        append("CUC", "931");//古巴可兑换比索
        append("ZWL", "932");//津巴布韋元
        append("BYN", "933");//白俄罗斯卢布
        append("New Manat", "934");//土库曼斯坦元
        append("GHS", "936");//加纳塞地
        append("VEF", "937");//委內瑞拉玻利瓦尔
        append("SDG", "938");//苏丹镑
        append("RSD", "941");//塞尔维亚第纳尔
        append("MZN", "943");//莫桑比克麦梯卡尔
        append("AZN", "944");//阿塞拜疆马纳特
        append("RON", "946");//罗马尼亚列伊
        append("TRY", "949");//土耳其新里拉
        append("XAF", "950");//CFA法郎BEAC
        append("XCD", "951");//东加勒比元
        append("XOF", "952");//CFA法郎BCEAO
        append("XPF", "953");//CFP法郎
        append("ZMW", "967");//赞比亚币
        append("SRD", "968");//苏里南元
        append("MGA", "969");//马达加斯加阿里亚里
        append("Unidad", "970");//哥伦比亚比索
        append("AFN", "971");//阿富汗尼
        append("TJS", "972");//塔吉克斯坦索莫尼
        append("AOA", "973");//安哥拉宽扎
        append("BYR", "974");//白俄罗斯卢布
        append("BGN", "975");//新保加利亚列弗
        append("CDF", "976");//刚果法郎
        append("BAM", "977");//波黑可兑换马克
        append("EUR", "978");//欧元
        append("UAH", "980");//乌克兰元
        append("GEL", "981");//拉里
        append("Mvdol", "984");//玻利维亚元
        append("PLN", "985");//波兰兹罗提
        append("BRL", "986");//巴西雷亚尔
        append("Unidades", "990");//智利元

    }

    public static String translateCurrencyCode(String orgin) {
        if (CURRENCY_CODE.containsKey(orgin)) {
            return CURRENCY_CODE.get(orgin);
        }
        return "156"; //default 156 CNY
    }

    private static void append (String name, String code ){
        CURRENCY_CODE.put(name, code);
        CURRENCY_NAME.put(code, name);
    }


    public static String translateCurrencyName(String orgin) {
        if (CURRENCY_NAME.containsKey(orgin)) {
            return CURRENCY_NAME.get(orgin);
        }
        return "CNY"; //default 156 CNY
    }

}
